import java.io.*;
import java.util.Scanner;

public class Demo1 {
    public static void main(String[] args) {
        //1.要搜索的路径
        Scanner scanner = new Scanner(System.in);//创建一个对象 来调用系统输入的函数
        System.out.println("请输入要搜索的路径");
        String srcPath =  scanner.next();//用 string 来保存路径
        File files = new File(srcPath);//创建 file 对象管理文件
        if(!files.isDirectory()){//file 不存在
            System.out.println("输入的路径不存在");
            return;
        }
        //2.要搜索的查询词
        System.out.println("请输入想查询的内容");
        String key = scanner.next(); //用 String 来保存 key
        scan(files,key);

    }
    //3.scan 遍历文件
    private static void scan(File rootFile, String key) {
        if(!rootFile.isDirectory()){
            return;
        }
        File[] files  = rootFile.listFiles();//
        if(files.length == 0 || files == null){
            return;
        }
        //实现逻辑 递归
        for(File f : files){
            if(f.isFile()){
                doSearch(f,key);
            }else {
                scan(f,key);
            }
        }
    }
    //4.doSearch 打开文件 读取文件内容 判定文件是否包含key
    private static void doSearch(File f ,String key) {
        StringBuilder stringBuilder = new StringBuilder();
        try(Reader reader = new FileReader(f)){
            char[] chars = new char[1024];
            while(true){
                int n = reader.read(chars);
                if(n == -1){
                    break;
                }
                String s = new String(chars,0,n);
                stringBuilder.append(s);
            }
        }catch (IOException e ){
            e.printStackTrace();
        }
        if(stringBuilder.indexOf(key) == -1){
            return;
        }
        System.out.println("找到目标文件" + f.getAbsolutePath());
    }
}
